<?php
namespace Swiftx\Interfaces\Application;
use Swiftx\Interfaces\Httpd\Request;


/**
 * 应用服务器对象
 * @package Swiftx\Application
 */
interface Server {

    /**
     * 获取应用程序版本号
     * @return string
     */
    public function version():string ;

    /**
     * 启动服务器初始化
     * @param string $root
     */
    public function boot(string $root);

    /**
     * 环境变量是否存在
     * @param string $name
     * @return bool
     */
    public function hasEvn(string $name):bool ;

    /**
     * 读取环境变量
     * @param string $name
     * @param string $default
     * @return string
     */
    public function getEvn(string $name, string $default = null) ;

    /**
     * 解析真实路径
     * @param string $value
     * @return string
     */
    public function parsePath(string $value):string ;

    /**
     * 解析配置文件
     * @param string|null $file
     * @return Config
     */
    public function parseConfig(string $file=null) : Config;

    /**
     * 从全局数组捕获Request对象
     * @return Request
     */
    public function captureRequest():Request;

}


